/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.garcomeletronico.controlador.implementacao;

import br.com.garcomeletronico.bean.Cardapio;
import br.com.garcomeletronico.controlador.IControladorCardapio;
import br.com.garcomeletronico.controlador.IControladorPrato;
import br.com.garcomeletronico.dao.IDAOCardapio;
import br.com.garcomeletronico.dao.implementacao.DAOCardapio;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Rivi
 */
public class ControladorCardapio implements IControladorCardapio {

    private IDAOCardapio repositorio;
    private IControladorPrato controladorPrato;

    public ControladorCardapio() {
        if (repositorio == null) {
            repositorio = new DAOCardapio();
        }

        if (controladorPrato == null) {
            controladorPrato = new ControladorPrato();
        }
    }

    @Override
    public void inserir(Cardapio c) throws SQLException {
        this.repositorio.inserir(c);
    }

    @Override
    public void alterar(Cardapio c) throws SQLException {
        this.repositorio.alterar(c);
    }

    @Override
    public void excluir(Cardapio c) throws SQLException {
        this.repositorio.excluir(c);
    }

    @Override
    public List<Cardapio> listarPorNome(Cardapio c) throws SQLException {
        return validarLista(this.repositorio.listarPorNome(c));
    }

    @Override
    public List<Cardapio> listarTodos() throws SQLException {
        return validarLista(this.repositorio.listarTodos());
    }

    private List<Cardapio> validarLista(List<Cardapio> cardapios) throws SQLException {
        if (cardapios == null) {
            throw new SQLException("Nenhum cardapio encontrado!");
        }

        for (int x = 0; x < cardapios.size(); x++) {
            Cardapio ponteiro = cardapios.get(x);
            ponteiro.setPratos(this.controladorPrato.listarPratosPorCardapio(ponteiro));
            cardapios.set(x, ponteiro);
        }

        return cardapios;
    }
}
